//封装jwt
//引入jsonwebtoken
const jsonwebtoken = require("jsonwebtoken")
//创建密钥 随意 只需创建的和解密的密钥是一个就行
const secret = "kerwin"
const JWT = {
	//用generate生成token；value, exprires到时候传过来 要求前端必须传的
	generate(value, exprires){
		//创建签名 这里的value为载荷数据 比如用户名、expiresIn为过期时间
		return jsonwebtoken.sign(value, secret,{expiresIn:exprires })
	},
	//用verify验证前端发来的token 是否过期
	verify(token){
		//解密：使用verify()检查这个令牌token是否由你信任方签发，并没被篡改。这里的secret密钥要和generate生成的那里写一样的；
		//用try catch捕获下 不然报错全部崩了
		try{
			return jsonwebtoken.verify(token, secret)
		}catch(e){
			console.log("错误在哪里-token过期了吗-JWT.js", e)
			return false
		}
	}
}

//测试以上封装的jwt是否好用
//定义一个token 10s过期
const token = JWT.generate({
	name:"kerwin",
},"1d")
//verify解密验证下
console.log("测试后端是否可以拿到token-JWT.js", JWT.verify(token))
//测试11s后是否还能拿到token
// setTimeout(()=> {
// 	console.log("测试后端11s后是否还可以拿到token-JWT.js", JWT.verify(token))
// }, 11000)

module.exports = JWT